package com.itheima.Jiuye17;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class AnnoDemo {
    public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, InvocationTargetException {
        //通过反射获取UserTest类的字节码文件对象
        Class<?> clazz = Class.forName("com.itheima.Jiuye17.UserTest");
        //通过反射创建UserTest对象
        UserTest userTest = (UserTest) clazz.newInstance();
        //通过反射获取到这个类中的所有方法对象，返回一个集合
        Method[] methods = clazz.getDeclaredMethods();
        //遍历这个集合获取到每一个方法对象
        //method依次表示每一个方法对象
        for (Method method : methods) {
            //isAnnotationPresent这个方法用于判断这个方法是否加了这个注解，加了返回tuer，没加返回false
            //参数为：注解的字节码文件对象，即:注解类名.class
            //也可以用于判断一个类加没加这个注解
            if (method.isAnnotationPresent(Test.class)){
                method.invoke(userTest);
            }
        }
    }
}
